#Boa:Dialog:Dialog1

import wx
import utiles
import consultasBD


def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1BUTTON1, wxID_DIALOG1BUTTON2, wxID_DIALOG1BUTTON3, 
 wxID_DIALOG1NOMBREPROVE, wxID_DIALOG1PARAMETRO, wxID_DIALOG1PCONTACTO, 
 wxID_DIALOG1PCP, wxID_DIALOG1PCUIT, wxID_DIALOG1PDIRECCION, 
 wxID_DIALOG1PEMAIL, wxID_DIALOG1PFAX, wxID_DIALOG1PLOCALIDAD, 
 wxID_DIALOG1POBSERVACIONES, wxID_DIALOG1PPROVINCIA, wxID_DIALOG1PTELEFONO, 
 wxID_DIALOG1PWEB, wxID_DIALOG1SECUENCIA, wxID_DIALOG1STATICTEXT1, 
 wxID_DIALOG1STATICTEXT10, wxID_DIALOG1STATICTEXT11, wxID_DIALOG1STATICTEXT12, 
 wxID_DIALOG1STATICTEXT13, wxID_DIALOG1STATICTEXT14, wxID_DIALOG1STATICTEXT15, 
 wxID_DIALOG1STATICTEXT2, wxID_DIALOG1STATICTEXT3, wxID_DIALOG1STATICTEXT4, 
 wxID_DIALOG1STATICTEXT5, wxID_DIALOG1STATICTEXT6, wxID_DIALOG1STATICTEXT7, 
 wxID_DIALOG1STATICTEXT8, wxID_DIALOG1STATICTEXT9, 
] = [wx.NewId() for _init_ctrls in range(33)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(522, 126), size=wx.Size(366, 409),
              style=wx.DEFAULT_DIALOG_STYLE, title='Buscar Proveedores')
        self.SetClientSize(wx.Size(358, 382))

        self.secuencia = wx.TextCtrl(id=wxID_DIALOG1SECUENCIA, name='secuencia',
              parent=self, pos=wx.Point(8, 24), size=wx.Size(104, 21), style=0,
              value='')

        self.pCUIT = wx.TextCtrl(id=wxID_DIALOG1PCUIT, name='pCUIT',
              parent=self, pos=wx.Point(120, 24), size=wx.Size(128, 21),
              style=0, value='')

        self.nombreprove = wx.TextCtrl(id=wxID_DIALOG1NOMBREPROVE,
              name='nombreprove', parent=self, pos=wx.Point(8, 64),
              size=wx.Size(344, 21), style=0, value='')

        self.pDIRECCION = wx.TextCtrl(id=wxID_DIALOG1PDIRECCION,
              name='pDIRECCION', parent=self, pos=wx.Point(8, 104),
              size=wx.Size(344, 21), style=0, value='')

        self.pLOCALIDAD = wx.TextCtrl(id=wxID_DIALOG1PLOCALIDAD,
              name='pLOCALIDAD', parent=self, pos=wx.Point(8, 144),
              size=wx.Size(128, 21), style=0, value='')

        self.pCP = wx.TextCtrl(id=wxID_DIALOG1PCP, name='pCP', parent=self,
              pos=wx.Point(136, 144), size=wx.Size(56, 21), style=0, value='')
        self.pCP.SetEditable(False)

        self.pPROVINCIA = wx.Choice(choices=["CAPITAL FEDERAL", "BUENOS AIRES",
              "SANTA FE", "ENTRE RIOS", "CORDOBA", "TUCUMAN", "SALTA", "JUJUY",
              "FORMOSA", "CHACO", "SANTIAGO DEL ESTERO", "CORRIENTES",
              "MISIONES", "LA PAMPA", "NEUQUEN", "MENDOZA", "SAN JUAN",
              "SAN LUIS", "LA RIOJA", "CATAMARCA", "RIO NEGRO", "CHUBUT",
              "SANTA CRUZ", "TIERRA DEL FUEGO"], name='pPROVINCIA', parent=self,
              pos=wx.Point(192, 144), size=wx.Size(160, 21), style=0)

        self.pTELEFONO = wx.TextCtrl(id=wxID_DIALOG1PTELEFONO, name='pTELEFONO',
              parent=self, pos=wx.Point(8, 184), size=wx.Size(160, 21), style=0,
              value='')

        self.pEMAIL = wx.TextCtrl(id=wxID_DIALOG1PEMAIL, name='pEMAIL',
              parent=self, pos=wx.Point(176, 184), size=wx.Size(176, 21),
              style=0, value='')
        self.pEMAIL.SetEditable(False)

        self.pFAX = wx.TextCtrl(id=wxID_DIALOG1PFAX, name='pFAX', parent=self,
              pos=wx.Point(8, 224), size=wx.Size(160, 21), style=0, value='')
        self.pFAX.SetEditable(False)

        self.pCONTACTO = wx.TextCtrl(id=wxID_DIALOG1PCONTACTO, name='pCONTACTO',
              parent=self, pos=wx.Point(176, 224), size=wx.Size(176, 21),
              style=0, value='')

        self.pWEB = wx.TextCtrl(id=wxID_DIALOG1PWEB, name='pWEB', parent=self,
              pos=wx.Point(8, 264), size=wx.Size(344, 21), style=0, value='')
        self.pWEB.SetEditable(False)

        self.pOBSERVACIONES = wx.TextCtrl(id=wxID_DIALOG1POBSERVACIONES,
              name='pOBSERVACIONES', parent=self, pos=wx.Point(8, 304),
              size=wx.Size(344, 21), style=0, value='')

        self.parametro = wx.TextCtrl(id=wxID_DIALOG1PARAMETRO, name='parametro',
              parent=self, pos=wx.Point(8, 352), size=wx.Size(24, 21), style=0,
              value='')
        self.parametro.SetEditable(False)

        self.button3 = wx.Button(id=wxID_DIALOG1BUTTON3, label='Limpiar',
              name='button3', parent=self, pos=wx.Point(120, 352),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnLimpiar, id=wxID_DIALOG1BUTTON3)

        self.button1 = wx.Button(id=wxID_DIALOG1BUTTON1, label='Buscar',
              name='button1', parent=self, pos=wx.Point(200, 352),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnAceptar, id=wxID_DIALOG1BUTTON1)

        self.button2 = wx.Button(id=wxID_DIALOG1BUTTON2, label='Salir',
              name='button2', parent=self, pos=wx.Point(280, 352),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_DIALOG1BUTTON2)

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label='Cod. Proveedor *', name='staticText1', parent=self,
              pos=wx.Point(8, 8), size=wx.Size(85, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
              label='Nombre *', name='staticText2', parent=self, pos=wx.Point(8,
              48), size=wx.Size(46, 13), style=0)

        self.staticText3 = wx.StaticText(id=wxID_DIALOG1STATICTEXT3,
              label='Par\xe1metro', name='staticText3', parent=self,
              pos=wx.Point(8, 336), size=wx.Size(50, 13), style=0)

        self.staticText5 = wx.StaticText(id=wxID_DIALOG1STATICTEXT5,
              label='Direccion *', name='staticText5', parent=self,
              pos=wx.Point(8, 88), size=wx.Size(52, 13), style=0)

        self.staticText6 = wx.StaticText(id=wxID_DIALOG1STATICTEXT6,
              label='Telefono *', name='staticText6', parent=self,
              pos=wx.Point(8, 168), size=wx.Size(51, 13), style=0)

        self.staticText7 = wx.StaticText(id=wxID_DIALOG1STATICTEXT7,
              label='e-mail', name='staticText7', parent=self, pos=wx.Point(176,
              168), size=wx.Size(28, 13), style=0)

        self.staticText8 = wx.StaticText(id=wxID_DIALOG1STATICTEXT8,
              label='Localidad *', name='staticText8', parent=self,
              pos=wx.Point(8, 128), size=wx.Size(53, 13), style=0)

        self.staticText9 = wx.StaticText(id=wxID_DIALOG1STATICTEXT9,
              label='C.P. *', name='staticText9', parent=self, pos=wx.Point(136,
              128), size=wx.Size(30, 13), style=0)

        self.staticText10 = wx.StaticText(id=wxID_DIALOG1STATICTEXT10,
              label='Provincia *', name='staticText10', parent=self,
              pos=wx.Point(192, 128), size=wx.Size(52, 13), style=0)

        self.staticText11 = wx.StaticText(id=wxID_DIALOG1STATICTEXT11,
              label='FAX', name='staticText11', parent=self, pos=wx.Point(8,
              208), size=wx.Size(19, 13), style=0)

        self.staticText12 = wx.StaticText(id=wxID_DIALOG1STATICTEXT12,
              label='Contacto', name='staticText12', parent=self,
              pos=wx.Point(176, 208), size=wx.Size(44, 13), style=0)

        self.staticText13 = wx.StaticText(id=wxID_DIALOG1STATICTEXT13,
              label='CUIT *', name='staticText13', parent=self,
              pos=wx.Point(120, 8), size=wx.Size(33, 13), style=0)

        self.staticText14 = wx.StaticText(id=wxID_DIALOG1STATICTEXT14,
              label='Pagina web', name='staticText14', parent=self,
              pos=wx.Point(8, 248), size=wx.Size(55, 13), style=0)

        self.staticText15 = wx.StaticText(id=wxID_DIALOG1STATICTEXT15,
              label='Observaciones', name='staticText15', parent=self,
              pos=wx.Point(8, 288), size=wx.Size(71, 13), style=0)

        self.staticText4 = wx.StaticText(id=wxID_DIALOG1STATICTEXT4,
              label='* datos\n   obligatorios', name='staticText4', parent=self,
              pos=wx.Point(288, 8), size=wx.Size(64, 26), style=0)

    def __init__(self, parent, idproveedor="",nombre=""):
        self._init_ctrls(parent)
        if idproveedor != "":
            self.secuencia.SetLabel(idproveedor)
            self.nombreprove.SetLabel(nombre)
            self.OnAceptar(None)
        self.secuencia.SetFocus()

    def OnSalir(self, event):
        self.Close()

    def verificaciones(self):
        parametro = 0
        if self.secuencia.GetLabel() == "":
            parametro+=1
        if self.pCUIT.GetLabel() == "":
            parametro+=1
        if self.nombreprove.GetLabel() == "":
            parametro+=1
        if self.pDIRECCION.GetLabel() == "":
            parametro+=1
        if self.pLOCALIDAD.GetLabel() == "":
            parametro+=1
        if self.pPROVINCIA.GetSelection() == -1:
            parametro+=1
        if self.pTELEFONO.GetLabel() == "":
            parametro+=1
        if parametro == 7:
            utiles.mensaje(None,"Debe especificar al menos\nun parametro de busqueda (son los marcados con *)")
            return False
        return True

    def OnLimpiar(self, event):
        self.secuencia.SetLabel("")
        self.pCUIT.SetLabel("")
        self.nombreprove.SetLabel("")
        self.pDIRECCION.SetLabel("")
        self.pLOCALIDAD.SetLabel("")
        self.pCP.SetLabel("")
        self.pPROVINCIA.SetLabel("")
        self.pTELEFONO.SetLabel("")
        self.pEMAIL.SetLabel("")
        self.pFAX.SetLabel("")
        self.pCONTACTO.SetLabel("")
        self.pWEB.SetLabel("")
        self.pOBSERVACIONES.SetLabel("")
        self.parametro.SetLabel("")
        self.secuencia.SetFocus()

    def llenarDatos(self,clientes):
        clientes = self.control(clientes)
        self.secuencia.SetLabel(clientes["idproveedor"])
        self.pCUIT.SetLabel(clientes["cuit"])
        self.nombreprove.SetLabel(clientes["nombre"])
        self.pDIRECCION.SetLabel(clientes["direccion"])
        self.pLOCALIDAD.SetLabel(clientes["localidad"])
        self.pCP.SetLabel(clientes["cp"])
        posicion = -1
        for i,item in enumerate(self.pPROVINCIA.GetItems()):
            if item==clientes["provincia"]: 
                posicion = i
                break
        self.pPROVINCIA.SetSelection(posicion)
        self.pTELEFONO.SetLabel(clientes["telefono"])
        self.pEMAIL.SetLabel(clientes["email"])
        self.pFAX.SetLabel(clientes["fax"])
        self.pCONTACTO.SetLabel(clientes["contacto"])
        self.pWEB.SetLabel(clientes["web"])
        self.pOBSERVACIONES.SetLabel(clientes["observacion"])
        self.parametro.SetLabel(clientes["parametro"])

    def OnAceptar(self, event):
        if not self.verificaciones():
            return

        condicion0 = ""
        condicion1 = condicion2 = condicion3 = condicion4 = ""
        condicion6 = condicion7 = condicion8 = condicion9 = ""
        condicion10 = condicion11 = condicion12 = condicion13 = ""
        id = self.secuencia.GetLabel()
        if id<>"": condicion0=" AND idproveedor LIKE '%"+id+"%' "
        nombr = self.nombreprove.GetLabel()
        if nombr<>"": condicion1=" AND nombre LIKE '%"+nombr+"%' "
        direc = self.pDIRECCION.GetLabel()
        if direc<>"": condicion2=" AND direccion LIKE '%"+direc+"%' "
        telef = self.pTELEFONO.GetLabel()
        if telef<>"": condicion3=" AND telefono LIKE '%"+telef+"%' "
        email = self.pEMAIL.GetLabel()
        if email<>"": condicion4=" AND email LIKE '%"+email+"%' "
        local = self.pLOCALIDAD.GetLabel()
        if local<>"": condicion6=" AND localidad LIKE '%"+local+"%' "
        cp    = self.pCP.GetLabel()
        if cp<>"": condicion7=" AND cp LIKE '%"+cp+"%' "
        cuit  = self.pCUIT.GetLabel()
        if cuit<>"": condicion8=" AND cuit LIKE '%"+cuit+"%' "
        fax   = self.pFAX.GetLabel()
        if fax<>"": condicion9=" AND fax LIKE '%"+fax+"%' "
        conta = self.pCONTACTO.GetLabel()
        if conta<>"": condicion10=" AND contacto LIKE '%"+conta+"%' "
        obser = self.pOBSERVACIONES.GetLabel()
        if obser<>"": condicion11=" AND observacion LIKE '%"+obser+"%' "
        web   = self.pWEB.GetLabel()
        if web<>"": condicion12=" AND web LIKE '%"+web+"%' "
        provi = self.pPROVINCIA.GetLabel()
        if provi<>"": condicion13=" AND provincia LIKE '%"+provi+"%' "
        
        r1 = "SELECT idproveedor,nombre,direccion,telefono,email,parametro, "
        r2 = "       localidad,cp,cuit,fax,contacto,observacion,web,provincia "
        r3 = "FROM proveedor "
        r4 = "WHERE 1 "+condicion0
        r5 = condicion1+condicion2+condicion3+condicion4+condicion6
        r6 = condicion7+condicion8+condicion9+condicion10+condicion11
        r7 = condicion12+condicion13+" ORDER BY nombre"
        
        consultaSQL = r1+r2+r3+r4+r5+r6+r7
        
        resultado = consultasBD.ordenCrudaDict(consultaSQL)
        if resultado == "" or resultado == ():
            utiles.mensaje(None,"Proveedor no encontrado")
            self.button2.SetFocus()
            return

        if len(resultado)>1:
            import BuscarProveedores2
            dlg = BuscarProveedores2.Dialog1(self,resultado)
            try:
                dlg.ShowModal()
            finally:
                if dlg.seleccion == "":
                    return
                clientes = dlg.seleccion
                dlg.Destroy()
        else:
            clientes = resultado[0]
        
        self.llenarDatos(clientes)
        self.button2.SetFocus()

    def control(self,clientes):
        for item in clientes:
            if clientes[item] == None:
                clientes[item] = ""
        return clientes
